/******************************************************************************************
文件名：internal_cmd.h
作者：狼狼    版本：V1.0    创建日期：2021.8.30
文件描述：
    内部指令格式定义。
历史修改记录：
1. 2021-8-30:V1.0 狼狼
创建。
2. 2022-5-11:V1.0 狼狼
代码公开。
******************************************************************************************/
#ifndef INTERNAL_CMD__
#define INTERNAL_CMD__
//+------------------------------------------------------------------------------------------+
//|                                           头文件
//+------------------------------------------------------------------------------------------+
/*|*/#include <stdint.h>
//+------------------------------------------------------------------------------------------+
//|                                          数据类型
//+------------------------------------------------------------------------------------------+
/*|*/#pragma pack(4)// 结构体采用4字节对齐方式
//|    ----------------------------------------
//|    指令标识（Command ID）
//|    [说明]指令标识被设计用于为不同的指令做分
//|          类，例如可基于指令执行效果或指令接
//|          受对象做分类。
//|    ----------------------------------------
/*|*/typedef enum cmd_id
/*|*/{
/*|*/    CMD_RESERVED = 0, /* 无效，保留 */
//|      ----------------------------------------
//|      [说明]Action类型指令设计及用于阻塞执行的
//|            动作，当前一条指令没有执行完毕时，
//|            后续指令不能被接受，具体分配和实现
//|            由设计者完成。
//|      ----------------------------------------
/*|*/    CMD_ACTION   = 1,
//|      ----------------------------------------
//|      [说明]Config类型指令被设计用于如系统参数
//|            配置、系统运行策略配置等情景具体分
//|            配和实现由设计者完成。
//|      ----------------------------------------
/*|*/    CMD_CONFIG   = 2,
//|      ----------------------------------------
//|      [说明]Probe类型指令被设计用于如设备发现、
//|            设备匹配、信息广播等情景，具体分配
//|            和实现由设计者完成。
//|      ----------------------------------------
/*|*/    CMD_PROBE    = 3,
//|      ----------------------------------------
//|      [说明]Control类型指令被涉设计用于控制消息
//|            传递和指令执行过程，例如指令取消，
//|            具体分配和实现由设计者完成。
//|      ----------------------------------------
/*|*/    CMD_CONTROL  = 4,
/*|*/}ENUM_CMD_ID;
//|
//|    ----------------------------------------
//|    内部指令
//|    [说明]pargs成员若非NULL，其指向的内存空
//|          间需由指令执行部分释放。
//|    ----------------------------------------
/*|*/typedef struct internal_cmd
/*|*/{
/*|*/    uint32_t session_id;
/*|*/    ENUM_CMD_ID cmd_id;
/*|*/    uint16_t cmd_value;
/*|*/    uint16_t msg_seq;
/*|*/    uint8_t *pargs;
/*|*/}ST_INTERNAL_CMD;
//+------------------------------------------------------------------------------------------+

#endif /* End of #define INTERNAL_CMD__ */
